package com.qf.springbootopenapi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qf.springbootopenapi.entity.User;
import com.qf.springbootopenapi.vo.ResultVo;
import com.qf.springbootopenapi.vo.TableVo;
import com.qf.springbootopenapi.vo.UserVo;

import javax.servlet.http.HttpSession;
import java.io.IOException;

public interface UserService extends IService<User> {
    
    /**
     * 检验用户名和密码是否正确，如果正确返回User对象；如果错误，返回null。
     *
     * @param username
     * @param password
     * @param session
     * @return
     */
    ResultVo login(String username, String password, HttpSession session);
    
    User getUserByUsername(String username);
    
    ResultVo createUser(UserVo userVo, String fileName) throws IOException;
    
    TableVo<User> getAllUserByPage(Integer page, Integer limit);
    
    /**
     * 拦截器中使用的还原用户登录状态的方法
     * @param username 用户名
     * @param md5Password md5加密过后的密码
     * @return 1
     */
    User restoreUser(String username, String md5Password);
    
    /**
     * @param page
     * @param limit
     * @return
     */
    TableVo<User> getUserByPageHelper(Integer page, Integer limit);
    
    ResultVo addUser(User user);
    
    ResultVo updateUser(User user);
    
    ResultVo delUser(Integer[] ids);
    
    TableVo<User> getUsersByCondition(Integer page, Integer limit, UserVo userVo);
    
    void getCsvFile(String filenameAndPath) throws IOException;
    
    void deleteHeadPortrait();
}
